#pragma once

#include "Renderer/OrthogonalCamera.h"
#include "Events/ApplicationEvent.h"
#include "Events/MouseEvent.h"
#include "Core/Time.h"
namespace Orange {
	class OrthogonalCameraController
	{
	public:
		OrthogonalCameraController(float aspectRadio , bool rotation = false);
		~OrthogonalCameraController();

		void OnUpdate(Time time);
		void OnEvent(Event& e);
		void OnResize(uint32_t width , uint32_t height);

		/// <summary>
		/// �����ֹ���
		/// </summary>
		bool OnMouseScrollEvent(MouseScrolledEvent& e);
		/// <summary>
		/// ���ڴ�С�ı�
		/// </summary>
		bool OnWindowResizeEvent(WindowResizeEvent& e);

		void SetZoomLevel();

		const OrthogonalCamera GetCamera()const {return m_Camera;};
		 OrthogonalCamera GetCamera() {return m_Camera;};
	private:
		float m_aspectRadio;
		float m_ZoomLevel = 1;
		glm::vec3 m_Camera_Position = { 0.0f,0.0f,0.0f };
		float m_Camera_Rotation = 0.0f;
		bool m_Rotation;
		float m_CameraMoveSpeed = 1.0 , m_CameraRotateSpeed = 180.0f;
		OrthogonalCamera m_Camera;

	};


}